/**
 * Created by qi_zhang on 2015/4/3.
 */

define(function(require, exports, module) {
    var Q = require("js/lib/q.js");
    require("js/lib/jquery.loading/jquery.loading.js");
    var template = require("js/lib/template.js");
    
    var Router = function(){
        this.init.apply(this,arguments);
    };

    Router.prototype = {
        constructor: Router,
        data:{},  //模板渲染用到的数据
        /**
         * 初始化
         * */
        init:function(){
             template.config("cache", false);
            //注册路由
            this.regRouter();

            //路由配置
            Q.init({
                key:"!",
                index:"category/index",  //默认没有锚点就跳转到 #!index
                pop:function(){ /* 每次 URL 变更时发生回调 */
                    //关闭所有dialog弹窗
                	/*if(window.dialog){
                        for(var x in dialog.list){
                            dialog.list[x].remove().close()
                        }
                    }*/
                    //关闭所有layer提示框
                    //layer.closeAll();
                    //左侧导航选中
                    //HeaderBar.setNavPosition();   //左侧全站导航的定位
                    console.log("qq");
                }
            });
        },
        /**
         * 注册路由 注：先注册后初始化
         * */
        regRouter:function(){
            var t = this;

            /**
             * 元数据专用注册路由
             * 页面链接实例： index.html#!category/metadata/infoSetId:org_list&navigationId:159ca104a7ab8a
             * @moduleName 模块名称
             * @params 附加参数
             * */
            Q.reg("category",function(moduleName,params){
                if(!moduleName){return alert("url传入参数不正确，请确认您访问的地址!");}

                var oPara = {moduleName:moduleName}; //附加其他参数
                if(params && params.indexOf(':') > -1) {
                    params.replace(/(\w+)\s*:\s*([\w-]+)/g, function(a, b, c) {
                        b && (oPara[b] = c);
                    });
                } else {
                    oPara = params;
                }

    

                //模块的模板和模块js的加载方式
                $("body").loading({zIndex:9999});
                //载入模块并执行
                require.async("js/category/"+moduleName+".js",function(Model){
                    new Model(oPara);
                    $("body").loading({state:false});//关闭loading遮罩
                });


            });

        }
    };

    module.exports = Router;

});
